

public class Demo6 {

    public static void main(String[] args) throws InterruptedException {
        Boolean isQuit = false;

        Thread t = new Thread(()->{
            while(!isQuit){
                System.out.println("线程正在运行");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
            System.out.println("线程运行结束");
        });

        t.start();
        Thread.sleep(5000);
        //isQuit = true;
        /*
        * Lambda有个语法规则,变量捕获
        * Lambda表达式中的代码,是可以捕获到上层定义域中的局部变量的~~
        *
        * 所谓的变量捕获,就是把当前作用域中的变量在Lambda表达式中复制一份
        * 在java中变量捕获还有一个限制: 只能捕获final 或实际上是final的变量
        *
        * 如果把isQuit改成成员变量,就变成了内部类访问外部类的属性,不再受变量捕获的限制
        * */
        System.out.println("设置isQuit为true");
    }
}
